
import axios from 'axios'

const isDev = process.env.NODE_ENV == 'development'

// const isDev :boolean = true
const request = axios.create(
	{
		// baseURL: isDev ? 'http://10.31.155.4:3000/api' : 'http://10.31.155.4:3000/api',
		baseURL: '/',
		timeout: 60000
	}
)
// 添加请求拦截器
request.interceptors.request.use(function (config) {
	// 在发送请求之前做些什么

	// console.log(config);

	return config;
}, function (error) {
	console.log(error);

	// 对请求错误做些什么
	return Promise.reject(error);
});

// 添加响应拦截器
request.interceptors.response.use(function (response) {
	// 2xx 范围内的状态码都会触发该函数。
	// 对响应数据做点什么
	return response.data;
}, function (error) {
	// 超出 2xx 范围的状态码都会触发该函数。
	// 对响应错误做点什么
	return Promise.reject(error);
});



export default function ajax(config) {

	const { url = '', method = 'get', data = {}, headers = {} } = config

	switch (method.toLowerCase()) {
		case 'get':
			return request.get(url, { params: data })
		case 'post':
			if (headers['content-type'] == 'application/x-www-form-urlencoded') {
				const obj = new URLSearchParams()
				for (const key in data) {
					obj.append(key, data[key])
				}
				return request.post(url, obj, { headers })
			}

			if (headers['content-type'] == 'multipart/form-data') {
				const obj = new FormData()
				for (const key in data) {
					obj.append(key, data[key])
				}
				return request.post(url, obj, { headers })
			}
			return request.post(url, data)
		case 'delete':
			return request.delete(url, { data })
		case 'put':
			return request.put(url, data)
		case 'patch':
			return request.patch(url, data)
		default:
			return request.request(config)

	}
}